﻿// 9_11.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

#include"Date.h"

int Date::GetMonthDay(int year, int month)
{
	int MonthDay[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	if (month == 2 && ((year % 4 == 0 && year % 100 != 0 || year % 400 == 0)))
	{
		return 29;
	}
	return MonthDay[month];

}
Date::Date(int year, int month, int day)
{
	_year = year;
	_month = month;
	_day = day;
	//析构函数检查日期是否合法
	if (month < 1 || month>12 || day<1 || day>GetMonthDay(year, month))
	{
		cout << "非法输入" << endl;
	}

}
void Date::Print()const
{
	cout << _year << "_" << _month << "_" << _day << endl;
}
//两个日期类比大小
bool Date::operator<(const Date& d)
{
	if (_year < d._year)
	{
		return true;
	}
	else if (_year == d._year && _month < d._month)
	{
		return true;
	}
	else if (_year == d._year && _month == d._month && _day < d._day)
	{
		return true;
	}
	else
	{
		return false;
	}
}
bool Date::operator==(const Date& d)
{
	return _year == d._year && _month == d._month && _day == d._day;
}
bool Date::operator<=(const Date& d)
{
	return *this < d || *this == d;
}
bool Date::operator>(const Date& d)
{
	return !(*this < d);
}
bool Date::operator>=(const Date& d)
{
	return *this > d || *this == d;
}
Date& Date::operator+=(int day)
{
	if (day < 0)
	{
		return *this -= -day;
	}
	_day += day;
	while (_day > GetMonthDay(_year, _month))
	{
		_month++;
		_day -= Date::GetMonthDay(_year, _month);


		if (_month > 12)
		{
			_year++;
			_month = 1;
		}
	}
	return *this;
}


int main()
{
	Date d1(2024, 9, 10);
	Date d2(2024, 9, 1);
	cout << (d1 < d2) << endl;
	cout << (d1 > d2) << endl;
	Date d3 = d2 + 1;
	d3.Print();
	cout << "hello world" << endl;
	return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件，或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来，若要再次打开此项目，请转到“文件”>“打开”>“项目”并选择 .sln 文件
